<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>6.严格模式下运行</title>
</head>

<body>
  <script>
   // 'use strict';
    function show () {
      console.log(this); // 不使用严格模式打印的是window ,非严格模式是undefined
    }
    show();
    class User {
      constructor(name) {
        this.name = name;
      }
      show () {
        function test () {
          //严格模式下输出 undefined，非严格模式输出 Window
          console.log(this);
        }
        test();
      }
    }
    // 非严格模式下，输出的也是 undefined，不需要考虑闭包问题
    // 这一点上，class 比 函数生成对象的方式更先进，考虑的更全面
    let xj = new User("向军");
    xj.show();

    function Hd (name) {
      this.name = name;
    }
    Hd.prototype.show = function () {
      function test () {
          //严格模式下输出 undefined，非严格模式输出 Window
        console.log(this);
      }
      test();
    };
    let obj = new Hd("后盾人");
    obj.show();

  </script>
</body>

</html>